package tp3;

import java.io.File;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;


public class Jugador {
	private int movimientos;
	private String nombre;
	
	public Jugador(String nombre){
		setMovimientos(0);
		this.nombre = nombre;
	}
	
	public void setNombre(String jugador){
		
		this.nombre = jugador;
	}
	
	private void setMovimientos(int movimientos) {
		//No puedo tener movimientos negativos
		if (movimientos < 0) 
			movimientos = 0;
		
		this.movimientos = movimientos;
	}

	public int getMovimientos() {
		return movimientos;
	}
	
	public void sumarMovimientos(int movimientosASumar) {
		this.setMovimientos(this.getMovimientos() + movimientosASumar);
	}
	
	public void aplicarPorcentajeAMovimientos(double porcentaje) {
		this.setMovimientos((int) Math.round(this.getMovimientos() * (porcentaje / 100)));
	}
	
	public String getNombre(){
		return nombre;
	}
		
		
		public Element serializar(String nombre) throws ParserConfigurationException {

			
			DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
			DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
			String movimientos = "";
			movimientos = String.valueOf(this.movimientos);
			
			//-----------------------------------------------
			
			// Tag principal
			Document doc = docBuilder.newDocument();
			Element raiz = doc.createElement("Jugador");
			doc.appendChild(raiz);
			raiz.setAttribute("Movimientos", movimientos);
			
			String nombreDelArchivo = "J"+nombre + ".xml";	
			// creo el archivo xml
			
			try{
			TransformerFactory transformerFactory = TransformerFactory.newInstance();
			Transformer transformer = transformerFactory.newTransformer();
			DOMSource source = new DOMSource(doc);
			StreamResult result = new StreamResult(new File(nombreDelArchivo));

			transformer.transform(source, result);
			}
			catch (TransformerException tfe) {
			tfe.printStackTrace();
		    }
		
			
return raiz;
	}
		
		
		
		

		public static Jugador deserializar(String nombreDelArchivo){
			
			String archivo = nombreDelArchivo+".xml";
			
			
			try {
				//inicializo 
				File stocks = new File(archivo);
				DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
				DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
				Document doc = dBuilder.parse(stocks);
				doc.getDocumentElement().normalize();
				 
				NodeList nodes = doc.getElementsByTagName("Jugador");
				Node tagMovimientos = nodes.item(0);
				Node tagNombre = nodes.item(0);
				
				int movimientos = Integer.parseInt( ((Element) tagMovimientos).getAttribute("Movimientos"));
				String nombre = ((Element) tagNombre).getAttribute("Nombre");
				//--------------------------------------
				
				Jugador nuevoJugador=new Jugador(nombre);
				nuevoJugador.setMovimientos(movimientos);
				
				
				 
				 return nuevoJugador;
				} catch (Exception ex) {
				ex.printStackTrace();
				
				return  null;
				
				}
			
			
}}



